export interface Option {
  label: string;
  value?: string | number;
  children?: Option[];
}
export enum FeatureEnum {
  PRIVATE = 'private',
  PUBLIC = 'public',
}
export type TypeEnum =
  | 'input'
  | 'input-number'
  | 'switch'
  | 'slider'
  | 'cascader'
  | 'transfer'
  | 'select'
  | 'radio'
  | 'checkbox'
  | 'date-picker'
  | 'time-picker'
  | 'color-picker'
  | 'tree-select'
  | 'hidden'
  | 'text'
  | 'slot'
  | 'title'
  | 'progress-input'
  | 'image-selector'
  | 'image-selector1'
  | 'tab';

export interface Column {
  group?: string;
  type: TypeEnum;
  prop: string;
  label: string;
  width?: string | number;
  required?: boolean;
  className?: string;
  rules?: any[];
  options?: Option[] | object;
  span?: number;
  offset?: number;
  visible?: boolean;
  formProps?: Record<string, any>;
  order?: number;
  colProps?: Record<string, any>;
}

export interface Group {
  key: string;
  title: string;
  collapsed?: boolean;
  switchVisible?: boolean;
  columns?: Column[];
}
